/**
 * 这个类中提供了一些愚蠢的办法
 */
package cn.antia.util;

import cn.antia.cep.common.AntiaLog;

import java.util.*;
import java.text.*;
/**
 * @author sunkeei
 *
 */
public class GoofyIdeas {
	/**
	 * 取得默认日期(1900-01-01)
	 * 提供此方法的原因是因为Spring无法处理MYSQL数据库中默认的日期（0000-00-00）
	 *
     * @return date*/
	public static Date getDefaultDate(){
		Date date = null;
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
		try{
			date = dateFormat.parse("1900-01-01");
		}catch(Exception e){
			AntiaLog.error("转换默认日期出错。无法将1900-01-01转换为日期型。");
		}
		return date;
	}
	/**
	 * 给定一个日期字符串和日期格式，返回日期对象
	 * @param dateString 日期字符串
	 * @param formatString 格式字符串，若这个参数为空。则使用 yyyy-MM-dd HH:mm:ss 格式转换
	 * @return date*/
	public static Date getDateByFormat(String dateString,String formatString){
		if(formatString == null){
			formatString = "yyyy-MM-dd HH:mm:ss";
		}
		SimpleDateFormat dateFormat = new SimpleDateFormat(formatString);
		try{
			return dateFormat.parse(dateString);
		}catch(Exception e){
			AntiaLog.error("转换默认日期出错。无法将1900-01-01转换为日期型。");
		}
		return null;
	}
	
	/**
	 * 将日期将指定格式字符化
	 * 如果指定格式为空，则默认使用 "yyyy-MM-dd HH:mm:ss"来处理
	 * @param formatString 格式
	 * @return date string*/
	
	public static String getNowDate(String formatString){
		Date date = new Date();
		if(formatString == null){
			formatString = "yyyy-MM-dd HH:mm:ss";
		}
		SimpleDateFormat dateFormat = new SimpleDateFormat(formatString);
		return dateFormat.format(date);
	}
	/**
	 * String format: yyyy-MM-dd HH:mm:ss
	 * @return s
	 */
	public static String getNowDate(){
		return getNowDate(null);
	}
	/**
	 * String format: HH:mm:ss
	 * @return time string format
	 */
	public static String getNowTime(){
		Calendar calendar = Calendar.getInstance();
		StringBuffer sb = new StringBuffer();
		sb.append(calendar.get(Calendar.HOUR_OF_DAY)).append(":").append(calendar.get(Calendar.MINUTE)).append(":");
		sb.append(calendar.get(Calendar.SECOND));
		return sb.toString();
	}
	
	public static void main(String[] args){
		System.out.println(GoofyIdeas.getNowDate("yyyy-MM-dd HH:mm:ss"));
	}

    /**
     * 返回两个时间差值的日期格式
     * @param beginTime beginTime
     * @param endTime endTime
     * @return String
     * @throws Exception e
     */
	public static String getFormateTime(Date beginTime, Date endTime) throws Exception {
		long between = endTime.getTime() - beginTime.getTime();
		long hour = between / 1000 / 3600;
		long minute = (between / 1000 % 3600) / 60;
		long second = (between / 1000 % 3600) % 60;
		if(hour<0 || minute<0 || second<0){
			throw new Exception("开始时间大于结束时间");
		}
		StringBuffer active = new StringBuffer().append(hour).append(":");
		if (minute < 10) {
			active.append("0").append(minute).append(":");
		} else {
			active.append(minute).append(":");
		}
		if (second < 10) {
			active.append("0").append(second);
		} else {
			active.append(second);
		}
		return active.toString();
	}

    /**
     * 以秒为单位
     * @param between between
     * @return String
     */
	public static String getFormateTemeByLong(long between){
		long hour = between / 3600;
		long minute = (between % 3600) / 60;
		long second = (between % 3600) % 60;		
		StringBuffer active = new StringBuffer().append(hour).append(":");
		if (minute < 10) {
			active.append("0").append(minute).append(":");
		} else {
			active.append(minute).append(":");
		}
		if (second < 10) {
			active.append("0").append(second);
		} else {
			active.append(second);
		}
		return active.toString();
	}
}
